//package com.summer.controller;
//
//import com.summer.config.YouxinSMSConfig;
//import com.summer.entity.SourceUserLoginInfo;
//import com.summer.enums.StatusCodeEnum;
//import com.summer.service.SourceChannelService;
//import com.summer.service.SourceH5Service;
//import com.summer.service.SourceUserLoginInfoService;
//import com.summer.util.JwtUtil;
//import com.summer.vo.ResultVO;
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.http.ResponseEntity;
//import org.springframework.stereotype.Controller;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestMethod;
//import org.springframework.web.bind.annotation.ResponseBody;
//
//import javax.annotation.Resource;
//import javax.servlet.http.HttpServletRequest;
//import java.util.Date;
//import java.util.HashMap;
//import java.util.Map;
//
//import static com.summer.util.IPUtils.getIpAddr;
//
///**
// * 用户登录Controller测试
// */
//@Controller
//@RequestMapping("/user")
//public class UserLoginController {
//
//    @Resource(name = "sourceH5ServiceImpl")
//    private SourceH5Service sourceH5Service;
//
//    @Resource(name="sourceUserLoginInfoServiceImpl")
//    private SourceUserLoginInfoService sourceUserLoginInfoService;
//
//    @Resource(name="sourceChannelServiceImpl")
//    private SourceChannelService sourceChannelService;
//
//    @Resource
//    private YouxinSMSConfig youxinSMSConfig;
//
//    /**
//     * 测试发送验证码
//     * @param mobile 手机号码
//     * @param request
//     * @return
//     * @throws NumberFormatException
//     * @throws Exception
//     */
//    @ResponseBody
//    @RequestMapping(value = "/sendMsgCode", method = { RequestMethod.POST, RequestMethod.GET })
//    public ResponseEntity<ResultVO> sendMsgCode(String mobile, HttpServletRequest request,
// String channelCode) throws NumberFormatException, Exception {
//        //判断手机号是否为空
//        if (StringUtils.isBlank(mobile)){
//            throw new SummerException(StatusCodeEnum.PHONENUMBER_NULL);
//        }
//        //获取访问域名
//       // String domainName = request.getRequestURL().toString().replace(request.getRequestURI
// (), "").split("//")[1];
//        //根据指定域名得到h5列表
//       // SourceH5 h5 = sourceH5Service.findByDomainName(domainName);
//       /* if (h5 == null) {
//            throw new SummerException(StatusCodeEnum.DOMAINNAME_NOTFILING);
//        }*/
//        String code = "";
//        Date now =new Date();
//        //根据电话号码和h5编码得到注册用户信息
//        SourceUserLoginInfo loginInfo = sourceUserLoginInfoService.findByPhoneAndH5Code(mobile,
// "AC15D0");
//        //添加token
//        final String jwt = JwtUtil.generateToken(mobile, null);
//        Map<String, Object> resultContent = new HashMap<String, Object>() {{
//            put("token", jwt);
//        }};
//        if (loginInfo == null) {
//            code = getCode();
//            loginInfo = new SourceUserLoginInfo();
//            loginInfo.setPhoneNumber(mobile);
//            loginInfo.setLoginTimes(0);
//            loginInfo.setIpAddress(getIpAddr(request));
//            loginInfo.setSourceH5Code("AC15D0");
//            loginInfo.setSourceChannelCode(channelCode);
//            loginInfo.setIpAddress(getIpAddr(request));
//            loginInfo.setMessageCode(code);
//            loginInfo.setLastCodeTime(new Date(now.getTime() + 1800000));
//            if (youxinSMSConfig.sendCode(mobile,code,"桃花宝")) {
//                sourceUserLoginInfoService.save(loginInfo);
//                return ResponseEntity.ok().body(new ResultVO(StatusCodeEnum
// .SENT_INFORMATION_SUCCESS.getCode(), StatusCodeEnum.SUCCESS_CODE.getMessage(), resultContent));
//            }else {
//                return ResponseEntity.ok().body(new ResultVO(StatusCodeEnum
// .SENT_INFORMATION_FAIL.getCode(), StatusCodeEnum.SENT_INFORMATION_FAIL.getMessage()));
//            }
//        }else {
//            //检验验证码是否过期
//            if (now.compareTo(loginInfo.getLastCodeTime()) < 0) {
//                return ResponseEntity.ok().body(new ResultVO(StatusCodeEnum
// .VERIFICATION_CODE_NOT_EXPIRED));
//            }else {
//                //更新用户注册信息的验证码和验证码有效期
//                code = getCode();
//                loginInfo.setMessageCode(code);
//                loginInfo.setLastCodeTime(now);
//                loginInfo.setLastCodeTime(new Date(now.getTime() + 1800000));
//                if (youxinSMSConfig.sendCode(mobile,code,"桃花宝")) {
//                    sourceUserLoginInfoService.update(loginInfo);
//                    return ResponseEntity.ok().body(new ResultVO(StatusCodeEnum
// .SENT_INFORMATION_SUCCESS.getCode(), StatusCodeEnum.SENT_INFORMATION_SUCCESS.getMessage(),
// resultContent));
//                }else {
//                    return ResponseEntity.ok().body(new ResultVO(StatusCodeEnum
// .SENT_INFORMATION_FAIL));
//                }
//            }
//        }
//    }
//
//    /**
//     * 用户登录
//     * @param mobile
//     * @param messageCode
//     * @param request
//     * @param channelCode
//     * @return
//     * @throws Exception
//     */
//    @PostMapping(value = "/login")
//    public Object login(String mobile, String messageCode, final HttpServletRequest request,
//                        String channelCode) throws Exception {
//        //访问限制
//        /*Map<String, Object> map = new HashMap<String, Object>() {{
//            put("ip", IPUtils.getIpAddr(request));
//            put("url", Constant.IP_COUNT_URL);
//        }};
//        List<IpAddressLog> logs = ipAddressLogService.findParams(map);
//        if (logs.size() >= Constant.IP_COUNT_TIMES) {
//            return errorMsg("请求非法");
//        }*/
//      /*  SourceChannel sourceChannel = null;
//        if (StringUtils.isBlank(channelCode)) {
//           throw  new SummerException(StatusCodeEnum.ILLEGAL_PARAM);
//        }
//        channelCode = channelCode.split("&")[0];
//        //根据渠道编码获取渠道信息
//        sourceChannel = sourceChannelService.findByCode(channelCode);
//        if (sourceChannel == null) {
//           throw new SummerException(StatusCodeEnum.ILLEGAL_PARAM);
//        }
//        Date now = new Date();
//        String openId = (String) request.getSession().getAttribute("openId");
//        if (StringUtils.isEmpty(mobile)) {
//            throw  new SummerException(StatusCodeEnum.PHONENUMBER_NULL);
//        }
//        String ipAddr = getIpAddr(request);
//        String domainName = request.getRequestURL().toString().replace(request.getRequestURI(),
// "").split("//")[1];
//        SourceH5 h5 = sourceH5Service.findByDomainName(domainName);
//        if (h5 == null) {
//           throw new SummerException(StatusCodeEnum.DOMAINNAME_NOTFILING);
//        }
//
//        String code = h5.getCode();
//
//        if ("18610075974".equals(mobile) || "18305812621".equals(mobile) || "18868105903"
// .equals(mobile)) {
//
//        } else {
//            // 判断验证码是否正确
//            if (org.springframework.util.StringUtils.hasText(messageCode)) {// 验证码不为空
//                SourceUserLoginInfo loginInfo = sourceUserLoginInfoService.findByPhoneAndH5Code
// (mobile, code);
//                if (loginInfo == null || org.springframework.util.StringUtils.isEmpty(loginInfo
// .getMessageCode())) {
//                    return errorMsg("请获取验证码");
//                }else if (now.compareTo(loginInfo.getLastCodeTime()) > 0) {
//                    return errorMsg("验证码已失效，请重新获取");
//                }else if (!messageCode.equals(loginInfo.getMessageCode())) {
//                    return errorMsg("验证码错误");
//                }
//                loginInfo.setLoginTimes(loginInfo.getLoginTimes() + 1);
//
//                loginInfo.setIpAddress(ipAddr);
//                sourceUserLoginInfoService.update(loginInfo);
//            } else {
//                return errorMsg("输入验证码为空");
//            }
//        }*/
//
//        //如果对应的公众号产品域名查找为空,目前是配置的www.sze9q2.cn
//       /* SourceUser sourceUser = sourceUserService.findByPhoneNumber(mobile, code);
//
//        if (sourceUser == null) {
//            sourceUser = sourceUserService.findByPhoneNumber(mobile, Constant.H5_CODE_SBWH2);
//        }
//
//        if (sourceUser == null) {
//            sourceUser = sourceUserService.findByPhoneNumber(mobile, Constant.H5_CODE_HXQ);
//        }
//
//        if (sourceUser == null) {
//            sourceUserPhoneService.save(mobile);
//            if (ipAddr.startsWith("10") || ipAddr.startsWith("192") || ipAddr.startsWith("172")) {
//                ipAddr = null;
//            }
//            sourceUserWoolService.save(mobile, ipAddr);
//            sourceUser = new SourceUser();
//
//            if (sourceChannel != null && sourceChannel.getOnlineFlag()) {
//                sourceUser.setSourceChannelCodeForChannel(channelCode);
//            } else {
//                sourceUser.setSourceChannelCodeForChannel(Constant.CHANNEL_CODE_MY);
//            }
//            if (channelCode != null) {
//                Long count = sourceUserService.countByChannelCode(channelCode);
//                //渠道前10流量免费
//                if (Constant.CHANNEL_FREE_NUM > count) {
//                    sourceUser.setGapCardMoney(new BigDecimal(-0.01));
//                }
//            }
//            sourceUser.setMoneyWanted(new BigDecimal(0));
//            sourceUser.setPhoneNumber(mobile);
//            sourceUser.setAssignedTimes(0);
//            sourceUser.setEnable(true);
//            sourceUser.setSourceH5Code(h5.getCode());
//            sourceUser.setSourceChannelCode(channelCode);
//            sourceUser.setOpenId(openId);
//            sourceUser = sourceUserService.save(sourceUser);
//        }else if (sourceUser != null && openId !=null && sourceUser.getOpenId() == null) {
//            sourceUser.setOpenId(openId);
//            sourceUserService.update(sourceUser);
//        }
//        Map<String, Object> resultContent = new HashMap<String, Object>();
//        BigDecimal gapCardMoney = sourceUser.getGapCardMoney();
//        if ((sourceUser.getMoneyWanted() != null && sourceUser.getTimeWanted() != null &&
// gapCardMoney != null) || (gapCardMoney != null && BigDecimal.ZERO.compareTo(gapCardMoney) > 0)) {
//            resultContent.put("isPay", true);
//            if (openId != null) {
//                resultContent.put("isShopping", true);
//            }else {
//                resultContent.put("isShopping", false);
//            }
//        }else {
//            resultContent.put("isPay", false);
//        }
//        if (sourceUser.getUserName() != null && sourceUser.getIdCard() != null && sourceUser
// .getSesameSeed() != null) {
//            resultContent.put("isAuthentication", true);
//        }else {
//            resultContent.put("isAuthentication", false);
//        }
//        resultContent.put("userId", sourceUser.getId());
//        resultContent.put("credit1", sourceUser.getMoneyWanted());
//        resultContent.put("mobile", sourceUser.getPhoneNumber());*/
//        return null;
//    }
//
//
//
//    /**
//     * 获取验证码
//     * @return 验证码
//     */
//    private static String getCode() {
//        String code = "";
//        for (int i = 0; i < 4; i++) {
//            code = code + (int) (Math.random() * 10);
//        }
//        return code;
//    }
//}
